package persistent.dao;

import java.util.List;

import model.VCheckReport;
import model.VClassCheckReport;
import model.VGradeCheckRport;
import model.VReportImport;
import model.VSchoolCheckReport;

public interface ICheckReportDAO {

	/**
	 * 根据where条件查询心理测试报告
	 * @param wherecondition
	 * @return
	 */
	public List<VCheckReport> getReportByCondition(String wherecondition);
	
	/**
	 * 根据where条件查询心理测试报告
	 * @param wherecondition 查询条件
	 * @param currentPage 当前页
	 * @param pageSize 每页数
	 * @return 
	 */
	public List<VCheckReport> getReportByCondition(String wherecondition,int currentPage, int pageSize);
	
	/**
	 * 批量保存导入的测评报告
	 * @param reportlist
	 * @return
	 */
	public boolean saveReportFromImport(List<VReportImport> reportlist);
	
	/**
	 * 根据编号返回测试报告对象
	 * @param id
	 * @return
	 */
	public VCheckReport getVCheckReportByID(int id);
	
	/**
	 * 查询报告是否已经存在
	 * @param username
	 * @param checktime
	 * @return
	 */
	public boolean isExistCheckReport(int checktypeid,String username, String checktime);
	
	/**
	 * 根据用户名获得对应的报告列表
	 * @param username
	 * @return
	 */
	public List<VCheckReport> getReportsByUsername(String username);
	
	/**
	 * 批量删除测试报告数据
	 * @param username
	 * @return
	 */
	public boolean delBatchCheckReport(String[] checkids);
	
	/**
	 * 
	 * @param wherecondition
	 * @return
	 */
	public List<VClassCheckReport> getClassCheckReportsByCondition(String wherecondition);
	
	/**
	 * 根据查询条件得到班级测评结果
	 * @param wherecondition 查询条件
	 * @param currentPage 当前页
	 * @param pageSize 每页数
	 * @return 成功返回VClassCheckReport列表，失败返回null
	 * @author djf
	 * @since 2018/11/8
	 */
	public List<VClassCheckReport> getClassCheckReportsByCondition(String wherecondition,int currentPage, int pageSize);
	
	/**
	 * 根据条件查询出年级测评结果
	 * @param strwhere 查询条件
	 * @return 成功返回VGradeCheckRport列表，失败返回null
	 * @author djf
	 */
	public List<VGradeCheckRport> getGradeCheckRportByStrwhere(String strwhere);
	
	/**
	 * 根据条件查询出年级测评结果
	 * @param strwhere 查询条件
	 * @param currentPage 当前页
	 * @param pageSize 每页数
	 * @return 成功返回VGradeCheckRport列表，失败返回null
	 * @author djf
	 */
	public List<VGradeCheckRport> getGradeCheckRportByStrwhere(String strwhere,int currentPage, int pageSize);
	
	/**
	 * 根据条件查询出学校测评结果
	 * @param strwhere 查询条件
	 * @return 成功返回VSchoolCheckReport列表，失败返回null
	 */
	public List<VSchoolCheckReport> getSchoolCheckReportByStrwhere(String strwhere);
	
	/**
	 * 根据条件查询出学校测评结果
	 * @param strwhere 查询条件
	 * @param currentPage 当前页
	 * @param pageSize 每页数
	 * @return 成功返回VSchoolCheckReport列表，失败返回null
	 */
	public List<VSchoolCheckReport> getSchoolCheckReportByStrwhere(String strwhere,int currentPage, int pageSize);
	
	
	/**
	 * 查询某班级所有学生的测评结果报告记录
	 * @param checktypeid 测试类型
	 * @param checktime 测试时间
	 * @param classid  班级id
	 * @return  List<VCheckReport>
	 */
	public List<VCheckReport> getClassCheckReports(int checktypeid,String checktime,
			String classid);
}
